package com.cms.recursoshumanos.activity.catalogo;

import java.util.List;

import com.example.frontendrecursoshumanos.R;
import com.cms.recursoshumanos.activity.main.MainRecursosHumanosActivity;
import com.cms.recursoshumanos.cache.ListaTipoArticuloCache;
import com.cms.recursoshumanos.cache.UserInfoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.handler.ListaArticuloCatalogoActivityHandler;
import com.cms.recursoshumanos.object.TipoArticulo;
import com.cms.recursoshumanos.object.Usuario;
import com.cms.recursoshumanos.object.list.ListaTipoArticulo;
import com.cms.recursoshumanos.utilities.Tool;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ListaTipoArticuloActivity extends MainRecursosHumanosActivity 
{
	private static TipoArticuloAdapter adaptador;
	private static ListView listViewTipoArticulo;
	private ListaArticuloAsync asyncListaArticuloTask;
	private static Usuario elUsuario;
	private static ListaTipoArticulo listado; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_tipo_articulo);
		elUsuario = UserInfoCache.getInstance().getUsuario();
		listado = ListaTipoArticuloCache.getInstance().getListaTipoArticulo();
		setCompenents();
		
	}
	@Override
	protected void onResume() 
	{
		super.onResume();
		if (elUsuario == null)
		{
			elUsuario = UserInfoCache.getInstance().getUsuario();
		}
		if (listado == null)
		{
			goPaginaPrincipal(ListaTipoArticuloActivity.this);
		}
	}
	

	public void setCompenents()
	{
		listViewTipoArticulo =  (ListView)  findViewById ( R.id.lvTipoArticulo );
		adaptador = new TipoArticuloAdapter(this, listado.getListaTipoArticulo());
		listViewTipoArticulo.setAdapter(adaptador);
	}
	
	public void getListaArticulo(TipoArticulo elTipoArticulo)
	{
		asyncListaArticuloTask = new ListaArticuloAsync(elUsuario,elTipoArticulo.getIdTipoArticulo());
		asyncListaArticuloTask.execute();
		
	}
	public void goListaArticulo(int id_tipo_articulo)
	{
		Intent intent = new Intent(ListaTipoArticuloActivity.this, ListaArticuloActivity.class);
		
		Bundle bundle = new Bundle();
		bundle.putString("id_tipo_articulo", ""+ id_tipo_articulo);
		intent.putExtras(bundle);
		
		startActivity(intent);

	}
	public class TipoArticuloAdapter extends ArrayAdapter<TipoArticulo> 
	{
	    LayoutInflater mInflater ;  
	    private List<TipoArticulo> mItems ;
	    private ViewHolder holder;
	 
	    public TipoArticuloAdapter  ( Context context , List<TipoArticulo> items)  
	    {
	        super ( context, -1, items )  ;
	        this.mItems = items ;
	        if (mItems.get(0).getIdTipoArticulo() != 0)
	        {
	        	this.mItems.add(0, new TipoArticulo(0, "Todas las Categorias", null));
	        }
	        this.mInflater = LayoutInflater.from(context) ;
	    }
	    
	    @ Override
	    public View getView ( final int position, View convertView, ViewGroup parent )  
	    {
	            // Inflate the custom view
	    	if (convertView == null)
	    	{
	    		convertView =   mInflater.inflate( R.layout.elementos_lista_tipo_objeto_item,null);    		
	    		convertView.setOnClickListener(new OnClickListener() 
	    		{
					
					@Override
					public void onClick(View v) 
					{
						getListaArticulo(mItems.get(position));
					}
				});
	    		
	    		holder = new ViewHolder();
	    		holder.nombreTipoArticulo = (TextView) convertView.findViewById(R.id.tvNombreTipoObject);
	    		convertView.setTag(holder);
	    	}
	    	else
	    	{
	    		holder = (ViewHolder)convertView.getTag();
	    	}

    		holder.nombreTipoArticulo.setText(mItems.get(position).getNombreTipoArticulo());
    		
	        return convertView ;
	    }
	    private class ViewHolder 
	    {    	  
        	  TextView  nombreTipoArticulo;
        }
	}
	
	
	private class ListaArticuloAsync extends AsyncTask<String, Void, String>
	{
		private int tipo_articulo_id;
		private ProgressDialog dialog;
		
		private Usuario elUsuario;
		
		public ListaArticuloAsync(Usuario elUsuario, int tipo_articulo_id)
		{
			this.elUsuario = elUsuario;
			this.tipo_articulo_id = tipo_articulo_id;
		}

		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(ListaTipoArticuloActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(String... arg0) 
		{
			
			ListaArticuloCatalogoActivityHandler handler = new ListaArticuloCatalogoActivityHandler();
			String result = handler.getListaArticuloScreen(this.elUsuario.getNombre_Usuario(),
															this.elUsuario.getPassword());
			return result;
			//return ConexionHandler.makeLogin(LoginActivity.this,arg0[0], arg0[1]);
		}
		
		@Override
		public void onPostExecute(String  result)
		{
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 
				goListaArticulo(tipo_articulo_id);
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
		}
	}
	

}
